package com.yeyks.cnbooking.service;

import com.yeyks.cnbooking.Result.addresssearch.CbAddressSearchData;
import com.yeyks.cnbooking.Result.bookingcancel.CbBookingCancelData;
import com.yeyks.cnbooking.Result.hotellistsearch.CbHotelListSearchData;
import com.yeyks.cnbooking.Result.rateplansearch.CbRatePlanSearchData;
import com.yeyks.cnbooking.Result.booking.CbBookingData;
import com.yeyks.cnbooking.Result.hotelsearch.CbHotelSearchData;
import com.yeyks.cnbooking.Result.ordersearch.CbOrderSearchData;
import com.yeyks.cnbooking.Result.prebookingcheck.CbPreBookingCheckData;
import com.yeyks.cnbooking.Result.roomsearch.CbRoomSearchData;
import com.yeyks.cnbooking.base.CNResponse;
import com.yeyks.cnbooking.param.addresssearch.CbAddressSearchParam;
import com.yeyks.cnbooking.param.booking.CbBookingParam;
import com.yeyks.cnbooking.param.bookingcancel.CbOrderCancelParam;
import com.yeyks.cnbooking.param.hotel.CbHotelListSearchParam;
import com.yeyks.cnbooking.param.hotel.CbHotelSearchParam;
import com.yeyks.cnbooking.param.CbPreBookingCheckParam;
import com.yeyks.cnbooking.param.ordersearch.CbOrderSearchParam;
import com.yeyks.cnbooking.param.rateplansearch.CbRatePlanSearchParam;
import com.yeyks.cnbooking.param.roomsearch.CbRoomSearchParam;

/**
 * @program: admin
 * @description:
 * @author: chenzheng
 * @create: 2019-09-20 10:00
 **/
public interface CNBookingService {

    /**
     * 酒店查询
     *
     * @param param
     * @return
     */
    CNResponse<CbHotelSearchData> hotelSearch(CbHotelSearchParam param);

    /**
     * 酒店列表查询
     *
     * @param param
     * @return
     */
    CNResponse<CbHotelListSearchData> hotelListSearch(CbHotelListSearchParam param);

    /**
     * 预订前校验
     *
     * @param param
     * @return
     */
    CNResponse<CbPreBookingCheckData> preBookingCheck(CbPreBookingCheckParam param);

    /**
     * 订单搜索
     *
     * @param param
     * @return
     */
    CNResponse<CbOrderSearchData> orderSearch(CbOrderSearchParam param);

    /**
     * 预订下单
     *
     * @param param
     * @return
     */
    CNResponse<CbBookingData> booking(CbBookingParam param);

    /**
     * 房间查询
     *
     * @param param
     * @return
     */
    CNResponse<CbRoomSearchData> roomSearch(CbRoomSearchParam param);

    /**
     * 价格计划查询
     *
     * @param param
     * @return
     */
    CNResponse<CbRatePlanSearchData> ratePlanSearch(CbRatePlanSearchParam param);

    /**
     * 订单取消
     *
     * @param param
     * @return
     */
    CNResponse<CbBookingCancelData> bookingCancel(CbOrderCancelParam param);


    /**
     * 查询CNBOOKING地址列表信息
     *
     * @param param 返回信息
     * @return 返回地址信息
     */
    CNResponse<CbAddressSearchData> addressSearch(CbAddressSearchParam param);
}
